package com.easylinkin.linkappapi.constructionalbum.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.common.model.SortModel;
import com.easylinkin.linkappapi.constructionalbum.dto.ConstructionAlbumDto;
import com.easylinkin.linkappapi.constructionalbum.entity.ConstructionAlbum;
import com.easylinkin.linkappapi.constructionalbum.entity.vo.ConstructionAlbumVo;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.List;

/**
 * ConstructionAlbum表数据库访问层
 *
 * @author zhengwen
 * @date 2022/11/07
 */
public interface ConstructionAlbumMapper extends BaseMapper<ConstructionAlbum> {


    /**
     * 查询分页
     *
     * @param page              分页参数对象
     * @param constructionAlbum 过滤参数对象
     * @return 查询分页结果
     */
    IPage<ConstructionAlbum> selectPage(Page page, @Param("constructionAlbum") ConstructionAlbum constructionAlbum);

    /**
     * 查询单条
     *
     * @param id 主键id
     * @return 查询结果
     */
    ConstructionAlbum getOneById(@Param("id") Serializable id);

    /**
     * @param page                页码
     * @param constructionAlbumVo 条件vo
     * @param sorts
     * @return 查询分页结果dto
     */
    IPage<ConstructionAlbumDto> selectDtoPage(Page page, @Param("constructionAlbumVo") ConstructionAlbumVo constructionAlbumVo, @Param("sorts") List<SortModel> sorts);

    /**
     * 获取最后一张照片
     * @param constructionAlbum 条件
     * @return 最后一张照片信息
     */
    ConstructionAlbum getLastImgBy(ConstructionAlbum constructionAlbum);

    /**
     * 获取照片数量
     * @param constructionAlbum 条件
     * @return 获取照片数量
     */
    int getImgNum(ConstructionAlbum constructionAlbum);
    /**
     * 查询dto信息
     * @param id id
     * @return dto信息
     */
    ConstructionAlbumDto selectDtoById(Long id);
    /**
     * 查询子集照片信息list
     * @param id 父级id
     * @return 子集照片信息list
     */
    List<ConstructionAlbumDto> selectChildDtoList(Long id);
}

